//
// SoapTrace.Net - A soap message monitoring utility. 
//
// Copyright (C) 2005 Matthew Ward
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
// Matthew Ward (mrward@users.sourceforge.net)

using NUnit.Framework;
using SoapTrace.Core.Diagnostics;
using System;

namespace SoapTrace.Tests.Logging
{
	/// <summary>
	/// Tests the <see cref="PacketLogEntryCollection"/> class and its
	/// maximum number of items limit.
	/// </summary>
	[ TestFixture ]
	public class LimitLogEntryTestFixture
	{
		PacketLogEntryCollection Entries;
		int CountLimit = 1;
		
		/// <summary>
		/// Initialises each test.
		/// </summary>
		[ SetUp ]
		public void Init( )
		{
			Entries = new PacketLogEntryCollection( );
			Entries.CountLimit = CountLimit;
		}
		
		/// <summary>
		/// No items at start. 
		/// </summary>
		[ Test ]
		public void NoItems( )
		{
			Assert.AreEqual( 0, Entries.Count, "Expect no items at start." );
		}
		
		/// <summary>
		/// Add a single item.
		/// </summary>
		[ Test ]
		public void AddOneItem( )
		{
			PacketLogEntry Entry = new PacketLogEntry( "foo", 100, DateTime.Now, null, PacketLogEntry.Ethernet );
			Entries.Add( Entry );
			
			Assert.AreEqual( 1, Entries.Count, "Should be one item." );
		}
		
		/// <summary>
		/// Add a two items.
		/// </summary>
		[ Test ]
		public void AddTwoItems( )
		{
			AddOneItem( );
			
			PacketLogEntry Entry = new PacketLogEntry( "bar", 1000, DateTime.Now, null, PacketLogEntry.Ethernet );
			Entries.Add( Entry );
			
			Assert.AreEqual( 1, Entries.Count, "Should be one item." );
			Assert.AreEqual( Entry, Entries[ 0 ], "Item in collection does not match." );
		}
	}
}
